package com.kedacom.ctsp.authz.security.provider;

import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * 内存Token管理
 *
 * @author xuwei
 * @create 2018-04-25 12:40
 **/
public class MemoryTokenManager extends TokenManager {

    private Map<String, AuthUserDetails> accessTokenCache = Maps.newConcurrentMap();

    @Override
    public void removeAccessToken(String accessToken) {
        if (StringUtils.isNotBlank(accessToken)) {
            accessTokenCache.remove(accessToken);
        }
    }

    @Override
    public boolean existAccessToken(String accessToken) {
        if (StringUtils.isBlank(accessToken)) {
            return false;
        }
        return accessTokenCache.containsKey(accessToken);
    }

    @Override
    public void addAccessToken(String accessToken, AuthUserDetails principal) {
        if (StringUtils.isNotBlank(accessToken) && principal != null) {
            accessTokenCache.put(accessToken, principal);
        }
    }

    @Override
    public AuthUserDetails getAuthUserDetailsByAccessToken(String accessToken) {
        if (StringUtils.isBlank(accessToken)) {
            return null;
        }
        return accessTokenCache.get(accessToken);
    }

    @Override
    protected void refreshToken(String accessToken) {

    }

}
